39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_spi_master.h"
74#define STEPPER25_REG_FAULT 0x00
75#define STEPPER25_REG_DIAG1 0x01
76#define STEPPER25_REG_DIAG2 0x02
77#define STEPPER25_REG_DIAG3 0x03
78#define STEPPER25_REG_CTRL1 0x04
79#define STEPPER25_REG_CTRL2 0x05
80#define STEPPER25_REG_CTRL3 0x06
81#define STEPPER25_REG_CTRL4 0x07
82#define STEPPER25_REG_CTRL5 0x08
83#define STEPPER25_REG_CTRL6 0x09
84#define STEPPER25_REG_CTRL7 0x0A
85#define STEPPER25_REG_CTRL8 0x0B
86#define STEPPER25_REG_CTRL9 0x0C
87#define STEPPER25_REG_CTRL10 0x0D
88#define STEPPER25_REG_CTRL11 0x0E
89#define STEPPER25_REG_CTRL12 0x0F
90#define STEPPER25_REG_CTRL13 0x10
91#define STEPPER25_REG_INDEX1 0x11
92#define STEPPER25_REG_INDEX2 0x12
93#define STEPPER25_REG_INDEX3 0x13
94#define STEPPER25_REG_INDEX4 0x14
95#define STEPPER25_REG_INDEX5 0x15
96#define STEPPER25_REG_CUSTOM_CTRL1 0x16
97#define STEPPER25_REG_CUSTOM_CTRL2 0x17
98#define STEPPER25_REG_CUSTOM_CTRL3 0x18
99#define STEPPER25_REG_CUSTOM_CTRL4 0x19
100#define STEPPER25_REG_CUSTOM_CTRL5 0x1A
101#define STEPPER25_REG_CUSTOM_CTRL6 0x1B
102#define STEPPER25_REG_CUSTOM_CTRL7 0x1C
103#define STEPPER25_REG_CUSTOM_CTRL8 0x1D
104#define STEPPER25_REG_CUSTOM_CTRL9 0x1E
105#define STEPPER25_REG_ATQ_CTRL1 0x1F
106#define STEPPER25_REG_ATQ_CTRL2 0x20
107#define STEPPER25_REG_ATQ_CTRL3 0x21
108#define STEPPER25_REG_ATQ_CTRL4 0x22
109#define STEPPER25_REG_ATQ_CTRL5 0x23
110#define STEPPER25_REG_ATQ_CTRL6 0x24
111#define STEPPER25_REG_ATQ_CTRL7 0x25
112#define STEPPER25_REG_ATQ_CTRL8 0x26
113#define STEPPER25_REG_ATQ_CTRL9 0x27
114#define STEPPER25_REG_ATQ_CTRL10 0x28
115#define STEPPER25_REG_ATQ_CTRL11 0x29
116#define STEPPER25_REG_ATQ_CTRL12 0x2A
117#define STEPPER25_REG_ATQ_CTRL13 0x2B
118#define STEPPER25_REG_ATQ_CTRL14 0x2C
119#define STEPPER25_REG_ATQ_CTRL15 0x2D
120#define STEPPER25_REG_ATQ_CTRL16 0x2E
121#define STEPPER25_REG_ATQ_CTRL17 0x2F
122#define STEPPER25_REG_ATQ_CTRL18 0x30
123#define STEPPER25_REG_SS_CTRL1 0x31
124#define STEPPER25_REG_SS_CTRL2 0x32
125#define STEPPER25_REG_SS_CTRL3 0x33
126#define STEPPER25_REG_SS_CTRL4 0x34
127#define STEPPER25_REG_SS_CTRL5 0x35
128#define STEPPER25_REG_CTRL14 0x3C
146#define STEPPER25_FAULT_FAULT 0x80
147#define STEPPER25_FAULT_SPI_ERROR 0x40
148#define STEPPER25_FAULT_UVLO 0x20
149#define STEPPER25_FAULT_CPUV 0x10
150#define STEPPER25_FAULT_OCP 0x08
151#define STEPPER25_FAULT_STL 0x04
152#define STEPPER25_FAULT_TF 0x02
153#define STEPPER25_FAULT_OL 0x01
159#define STEPPER25_CTRL1_EN_OUT_DISABLED 0x00
160#define STEPPER25_CTRL1_EN_OUT_ENABLED 0x80
161#define STEPPER25_CTRL1_EN_OUT_MASK 0x80
162#define STEPPER25_CTRL1_SR_140_NS 0x00
163#define STEPPER25_CTRL1_SR_70_NS 0x40
164#define STEPPER25_CTRL1_SR_MASK 0x40
165#define STEPPER25_CTRL1_IDX_RST_LOW 0x00
166#define STEPPER25_CTRL1_IDX_RST_HIGH 0x20
167#define STEPPER25_CTRL1_IDX_RST_MASK 0x20
168#define STEPPER25_CTRL1_TOFF_9_5_US 0x00
169#define STEPPER25_CTRL1_TOFF_19_US 0x08
170#define STEPPER25_CTRL1_TOFF_27_US 0x10
171#define STEPPER25_CTRL1_TOFF_35_US 0x18
172#define STEPPER25_CTRL1_TOFF_MASK 0x18
173#define STEPPER25_CTRL1_DECAY_SLOW 0x00
174#define STEPPER25_CTRL1_DECAY_MIXED_30_PCT 0x04
175#define STEPPER25_CTRL1_DECAY_MIXED_60_PCT 0x05
176#define STEPPER25_CTRL1_DECAY_SMART_DYNAMIC 0x06
177#define STEPPER25_CTRL1_DECAY_SMART_RIPPLE 0x07
178#define STEPPER25_CTRL1_DECAY_MASK 0x07
184#define STEPPER25_CTRL2_DIR_LOW 0x00
185#define STEPPER25_CTRL2_DIR_HIGH 0x80
186#define STEPPER25_CTRL2_DIR_MASK 0x80
187#define STEPPER25_CTRL2_STEP_LOW 0x00
188#define STEPPER25_CTRL2_STEP_HIGH 0x40
189#define STEPPER25_CTRL2_STEP_MASK 0x40
190#define STEPPER25_CTRL2_SPI_DIR_PIN 0x00
191#define STEPPER25_CTRL2_SPI_DIR_BIT 0x20
192#define STEPPER25_CTRL2_SPI_DIR_MASK 0x20
193#define STEPPER25_CTRL2_SPI_STEP_PIN 0x00
194#define STEPPER25_CTRL2_SPI_STEP_BIT 0x10
195#define STEPPER25_CTRL2_SPI_STEP_MASK 0x10
196#define STEPPER25_CTRL2_MICROSTEP_MODE_FULL_100 0x00
197#define STEPPER25_CTRL2_MICROSTEP_MODE_FULL_71 0x01
198#define STEPPER25_CTRL2_MICROSTEP_MODE_HALF_NO_CIRC 0x02
199#define STEPPER25_CTRL2_MICROSTEP_MODE_HALF 0x03
200#define STEPPER25_CTRL2_MICROSTEP_MODE_QUARTER 0x04
201#define STEPPER25_CTRL2_MICROSTEP_MODE_1_OVER_8 0x05
202#define STEPPER25_CTRL2_MICROSTEP_MODE_1_OVER_16 0x06
203#define STEPPER25_CTRL2_MICROSTEP_MODE_1_OVER_32 0x07
204#define STEPPER25_CTRL2_MICROSTEP_MODE_1_OVER_64 0x08
205#define STEPPER25_CTRL2_MICROSTEP_MODE_1_OVER_128 0x09
206#define STEPPER25_CTRL2_MICROSTEP_MODE_1_OVER_256 0x0A
207#define STEPPER25_CTRL2_MICROSTEP_MODE_MASK 0x0F
213#define STEPPER25_CTRL3_CLR_FLT_LOW 0x00
214#define STEPPER25_CTRL3_CLR_FLT_HIGH 0x80
215#define STEPPER25_CTRL3_CLR_FLT_MASK 0x80
216#define STEPPER25_CTRL3_LOCK_UNLOCK 0x30
217#define STEPPER25_CTRL3_LOCK_LOCK 0x60
218#define STEPPER25_CTRL3_LOCK_MASK 0x70
219#define STEPPER25_CTRL3_TOCP_1_2_US 0x00
220#define STEPPER25_CTRL3_TOCP_2_2_US 0x08
221#define STEPPER25_CTRL3_TOCP_MASK 0x08
222#define STEPPER25_CTRL3_OCP_MODE_LATCHED 0x00
223#define STEPPER25_CTRL3_OCP_MODE_AUTO_RETRY 0x04
224#define STEPPER25_CTRL3_OCP_MODE_MASK 0x04
225#define STEPPER25_CTRL3_OTSD_MODE_LATCHED 0x00
226#define STEPPER25_CTRL3_OTSD_MODE_AUTO_RETRY 0x02
227#define STEPPER25_CTRL3_OTSD_MODE_MASK 0x02
228#define STEPPER25_CTRL3_TW_REP_DISABLED 0x00
229#define STEPPER25_CTRL3_TW_REP_ENABLED 0x01
230#define STEPPER25_CTRL3_TW_REP_MASK 0x01
236#define STEPPER25_CTRL4_TBLANK_TIME_1_US 0x00
237#define STEPPER25_CTRL4_TBLANK_TIME_1_5_US 0x40
238#define STEPPER25_CTRL4_TBLANK_TIME_2_US 0x80
239#define STEPPER25_CTRL4_TBLANK_TIME_2_5_US 0xC0
240#define STEPPER25_CTRL4_TBLANK_TIME_MASK 0xC0
241#define STEPPER25_CTRL4_STL_LRN_DIS 0x00
242#define STEPPER25_CTRL4_STL_LRN_EN 0x20
243#define STEPPER25_CTRL4_STL_LRN_MASK 0x20
244#define STEPPER25_CTRL4_EN_STL_DIS 0x00
245#define STEPPER25_CTRL4_EN_STL_EN 0x10
246#define STEPPER25_CTRL4_EN_STL_MASK 0x10
247#define STEPPER25_CTRL4_STL_REP_DIS 0x00
248#define STEPPER25_CTRL4_STL_REP_EN 0x08
249#define STEPPER25_CTRL4_STL_REP_MASK 0x08
250#define STEPPER25_CTRL4_FRQ_CHG_FILTERED 0x00
251#define STEPPER25_CTRL4_FRQ_CHG_NOT_FILTERED 0x04
252#define STEPPER25_CTRL4_FRQ_CHG_MASK 0x04
253#define STEPPER25_CTRL4_STEP_FRQ_TOL_1_PCT 0x00
254#define STEPPER25_CTRL4_STEP_FRQ_TOL_2_PCT 0x01
255#define STEPPER25_CTRL4_STEP_FRQ_TOL_4_PCT 0x02
256#define STEPPER25_CTRL4_STEP_FRQ_TOL_6_PCT 0x03
257#define STEPPER25_CTRL4_STEP_FRQ_TOL_MASK 0x03
263#define STEPPER25_CTRL11_TRQ_DAC_100_PCT 0xFF
264#define STEPPER25_CTRL11_TRQ_DAC_87_5_PCT 0xDF
265#define STEPPER25_CTRL11_TRQ_DAC_75_PCT 0xBF
266#define STEPPER25_CTRL11_TRQ_DAC_62_5_PCT 0x9F
267#define STEPPER25_CTRL11_TRQ_DAC_50_PCT 0x7F
268#define STEPPER25_CTRL11_TRQ_DAC_37_5_PCT 0x5F
269#define STEPPER25_CTRL11_TRQ_DAC_25_PCT 0x3F
270#define STEPPER25_CTRL11_TRQ_DAC_12_5_PCT 0x1F
276#define STEPPER25_STEP_MODE_FULL_100 0
277#define STEPPER25_STEP_MODE_FULL_71 1
278#define STEPPER25_STEP_MODE_HALF_NO_CIRC 2
279#define STEPPER25_STEP_MODE_HALF 3
280#define STEPPER25_STEP_MODE_QUARTER 4
281#define STEPPER25_STEP_MODE_1_OVER_8 5
282#define STEPPER25_STEP_MODE_1_OVER_16 6
283#define STEPPER25_STEP_MODE_1_OVER_32 7
284#define STEPPER25_STEP_MODE_1_OVER_64 8
285#define STEPPER25_STEP_MODE_1_OVER_128 9
286#define STEPPER25_STEP_MODE_1_OVER_256 10
292#define STEPPER25_DIR_CCW 0
293#define STEPPER25_DIR_CW 1
299#define STEPPER25_PIN_LOW_LEVEL 0
300#define STEPPER25_PIN_HIGH_LEVEL 1
306#define STEPPER25_SPEED_VERY_SLOW 0
307#define STEPPER25_SPEED_SLOW 1
308#define STEPPER25_SPEED_MEDIUM 2
309#define STEPPER25_SPEED_FAST 3
310#define STEPPER25_SPEED_VERY_FAST 4
320#define STEPPER25_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
321#define STEPPER25_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
339#define STEPPER25_MAP_MIKROBUS( cfg, mikrobus ) \
340 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
341 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
342 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
343 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
344 cfg.dir = MIKROBUS( mikrobus, MIKROBUS_AN ); \
345 cfg.sleep = MIKROBUS( mikrobus, MIKROBUS_RST ); \
346 cfg.step = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
347 cfg.fault = MIKROBUS( mikrobus, MIKROBUS_INT )
err_t stepper25_clear_fault(stepper25_t *ctx)
Stepper 25 clear fault function.
void stepper25_enable_device(stepper25_t *ctx)
Stepper 25 enable device function.
err_t stepper25_default_cfg(stepper25_t *ctx)
Stepper 25 default configuration function.
err_t stepper25_read_reg(stepper25_t *ctx, uint8_t reg, uint8_t *data_out)
Stepper 25 read register function.
void stepper25_switch_direction(stepper25_t *ctx)
Stepper 25 switch direction function.
void stepper25_set_step_pin(stepper25_t *ctx, uint8_t state)
Stepper 25 set STEP pin function.
void stepper25_set_direction(stepper25_t *ctx, uint8_t dir)
Stepper 25 set direction function.
err_t stepper25_init(stepper25_t *ctx, stepper25_cfg_t *cfg)
Stepper 25 initialization function.
err_t stepper25_disable_output(stepper25_t *ctx)
Stepper 25 disable output function.
void stepper25_cfg_setup(stepper25_cfg_t *cfg)
Stepper 25 configuration object setup function.
uint8_t stepper25_get_fault_pin(stepper25_t *ctx)
Stepper 25 get FAULT pin function.
err_t stepper25_drive_motor(stepper25_t *ctx, uint32_t steps, uint8_t speed)
Stepper 25 driver motor function.
err_t stepper25_write_reg(stepper25_t *ctx, uint8_t reg, uint8_t data_in)
Stepper 25 write register function.
err_t stepper25_set_step_mode(stepper25_t *ctx, uint8_t step_mode)
Stepper 25 set step mode function.
err_t stepper25_enable_output(stepper25_t *ctx)
Stepper 25 enable output function.
void stepper25_disable_device(stepper25_t *ctx)
Stepper 25 disable device function.
This file contains SPI specific macros, functions, etc.
stepper25_return_value_t
Stepper 25 Click return value data.
Definition stepper25.h:406
@ STEPPER25_ERROR
Definition stepper25.h:408
@ STEPPER25_OK
Definition stepper25.h:407
Stepper 25 Click configuration object.
Definition stepper25.h:381
pin_name_t sleep
Definition stepper25.h:390
pin_name_t step
Definition stepper25.h:391
spi_master_chip_select_polarity_t cs_polarity
Definition stepper25.h:397
pin_name_t sck
Definition stepper25.h:385
spi_master_mode_t spi_mode
Definition stepper25.h:396
pin_name_t mosi
Definition stepper25.h:384
uint32_t spi_speed
Definition stepper25.h:395
pin_name_t dir
Definition stepper25.h:389
pin_name_t miso
Definition stepper25.h:383
pin_name_t cs
Definition stepper25.h:386
pin_name_t fault
Definition stepper25.h:392
Stepper 25 Click context object.
Definition stepper25.h:357
digital_out_t sleep
Definition stepper25.h:360
spi_master_t spi
Definition stepper25.h:367
uint8_t step_mode
Definition stepper25.h:371
digital_out_t step
Definition stepper25.h:361
digital_in_t fault
Definition stepper25.h:364
uint8_t status
Definition stepper25.h:372
pin_name_t chip_select
Definition stepper25.h:369
digital_out_t dir
Definition stepper25.h:359